#赋值运算
l1=[1,2,3,[22,33]]
l2=l1#指向同一个列表 id 相同
l1.append(666)
print(l1,id(l1))
print(l2,id(l2))
#浅copy 开辟了新空间
l1=[1,2,3,[22,33]]
l2=l1.copy()
l1.append(666)
print(l1,id(l1))
print(l2,id(l2))
print('*'*20)
#浅拷贝开辟空间后两个列表的id不同，但里面的元素id相同,嵌套的可变类型id也相同
l1=[1,2,3,[22,33]]
l2=l1.copy()
l1[-1].append(666)#li[-1] is l2[-1]
print(l1,id(l1))#[1, 2, 3, [22, 33, 666]] 2258695480584
print(l2,id(l2))#[1, 2, 3, [22, 33, 666]] 2258695480776
print(id(l1[0]))
print(id(l2[0]))
l1[0]=90
print(l1,id(l1))
print(l2,id(l2))
print('*'*20)

#深copy，开辟新空间，里边的值与原来的的id也不一样，不可变类型id一样，可变类型id不一样
import copy
l1=[1,2,3,[22,33]]
l2=copy.deepcopy(l1)
print(l1,id(l1))
print(l2,id(l2))
l1[-1].append(666)
print(l1,id(l1))
print(l2,id(l2))
print(id(l1[0]),id(l2[0]))
print(id(l1[-1]),id(l2[-1]))
l1[0]=90
print(l1,id(l1))
print(l2,id(l2))
print('*'*20)

#相关面试题
l1=[1,2,3,[22,33]]
l2=l1[:]#全切是浅copy
l1[-1].append(666)
print(l1,id(l1))
print(l2,id(l2))

























